home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 September / PCWorld_2006-09_cd.bin / komercni software / zoner / zps8_cz.exe / {app} / HTMLPublish / compact.zht / main.js < prev    next >
Text File  |  2006-03-22  |  16KB  |  486 lines

  1. function GetPageFN(iPage) {
  2.   if (iPage == 1) {
  3.     return "index.htm";
  4.   }
  5.  
  6.   return "page" + IntToStr(iPage, 5) + ".htm";
  7. }
  8.  
  9. function GetImgPageFN(iFile) {
  10.   return "ipage" + IntToStr(iFile, 5) + ".htm";
  11. }
  12.  
  13.  
  14. function GenerateAlbum(cSourcePath, cDestPath)
  15. {
  16.   var iFilesCount = lSelectedFiles.GetCount();
  17.   var iDirsCount = lSelectedDirs.GetCount();
  18.   InitProgress(iDirsCount + iFilesCount);
  19.     
  20.   var iPerPage = iCols*iRows;
  21.   var iPagesCount = Math.ceil(iFilesCount / (iCols*iRows));
  22.  
  23.   //var iLeftColumnWidth=iThnWidth+50;
  24.  
  25.   var iLineStyle = parseInt(cLineStyle);
  26.   var sLineStyle = "solid";
  27.   if (iLineStyle==1)
  28.     sLineStyle="dashed";
  29.  
  30.   var iBackRef = parseInt(cBackRef);
  31.  
  32.   var iNavDivOff=iBlockHeaderFontSize-iFontSize;
  33.   //if (iNavDivOff<0) iNavDivOff=0;
  34.  
  35.   // copy index style
  36.   var tPageCSS = new CTemplate();
  37.   tPageCSS.Load(cSourcePath + "css_index.tpl", 0);
  38.   if (bBackImage)
  39.     tPageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor) + " url(" + cBackImageURL + ")");
  40.   else
  41.     tPageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor));
  42.   tPageCSS.SetReplace("${TEXTCOLOR}", HEXColor(iTxtColor));
  43.   tPageCSS.SetReplace("${THNTEXTCOLOR}", HEXColor(iThnTxtColor));
  44.   tPageCSS.SetReplace("${LINKCOLOR}", HEXColor(iLnkColor));
  45.   tPageCSS.SetReplace("${SEPARATORCOLOR}", HEXColor(iSeparatorColor));
  46.   tPageCSS.SetReplace("${IMGBORDERCOLOR}", HEXColor(iImgBorderColor));
  47.   tPageCSS.SetReplace("${THNBORDERCOLOR}", HEXColor(iThnBorderColor));
  48.   tPageCSS.SetReplace("${ATHNBORDERCOLOR}", HEXColor(iAThnBorderColor));
  49.   tPageCSS.SetReplace("${PREVIEWCELLWIDTH}", iThnWidth+20);
  50.   tPageCSS.SetReplace("${FOLDERSCOLUMNWIDTH}", iLeftColumnWidth);
  51.   tPageCSS.SetReplace("${IMAGESECTIONOFFSET}", iLeftColumnWidth+20);
  52.   tPageCSS.SetReplace("${IMAGEAREAWIDTH}", iImgWidth);
  53.   tPageCSS.SetReplace("${IMAGEAREAHEIGHT}", iImgHeight);
  54.   tPageCSS.SetReplace("${LINESTYLE}", sLineStyle);
  55.   tPageCSS.SetReplace("${FONTSIZE}", iFontSize);
  56.   tPageCSS.SetReplace("${THMFONTSIZE}", iThnFontSize);
  57.   tPageCSS.SetReplace("${DESCTEXTCOLOR}", HEXColor(iDescTxtColor));
  58.   tPageCSS.SetReplace("${FOOTERFONTSIZE}", iFooterFontSize);
  59.   tPageCSS.SetReplace("${FOLDERBORDERCOLOR}", HEXColor(iFolderBorderColor));
  60.   tPageCSS.SetReplace("${GALDESCFONTSIZE}", iGalDescFontSize);
  61.   tPageCSS.SetReplace("${HEADERFONTSIZE}", iBlockHeaderFontSize);
  62.   tPageCSS.SetReplace("${NAVDIVOFF}", iNavDivOff);
  63.  
  64.   SaveString(cDestPath + "page.css", tPageCSS.Replace(), 0);
  65.  
  66.   var tImageCSS = new CTemplate();
  67.   tImageCSS.Load(cSourcePath + "css_image.tpl", 0);
  68.   if (bBackImage)
  69.     tImageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor) + " url(" + cBackImageURL + ")");
  70.   else
  71.     tImageCSS.SetReplace("${BACKGROUND}", HEXColor(iBgColor));
  72.   tImageCSS.SetReplace("${TEXTCOLOR}", HEXColor(iTxtColor));
  73.   tImageCSS.SetReplace("${THNTEXTCOLOR}", HEXColor(iThnTxtColor));
  74.   tImageCSS.SetReplace("${LINKCOLOR}", HEXColor(iLnkColor));
  75.   tImageCSS.SetReplace("${SEPARATORCOLOR}", HEXColor(iSeparatorColor));
  76.   tImageCSS.SetReplace("${IMGBORDERCOLOR}", HEXColor(iImgBorderColor));
  77.   tImageCSS.SetReplace("${THNBORDERCOLOR}", HEXColor(iThnBorderColor));
  78.   tImageCSS.SetReplace("${ATHNBORDERCOLOR}", HEXColor(iAThnBorderColor));
  79.   tImageCSS.SetReplace("${FOLDERSCOLUMNWIDTH}", iLeftColumnWidth);
  80.   tImageCSS.SetReplace("${IMAGESECTIONOFFSET}", iLeftColumnWidth+20);
  81.   tImageCSS.SetReplace("${IMAGEAREAWIDTH}", iImgWidth);
  82.   tImageCSS.SetReplace("${IMAGEAREAHEIGHT}", iImgHeight);
  83.   tImageCSS.SetReplace("${LINESTYLE}", sLineStyle);
  84.   tImageCSS.SetReplace("${FONTSIZE}", iFontSize);
  85.   tImageCSS.SetReplace("${THMFONTSIZE}", iThnFontSize);
  86.   tImageCSS.SetReplace("${FOOTERFONTSIZE}", iFooterFontSize);
  87.   tImageCSS.SetReplace("${HEADERFONTSIZE}", iBlockHeaderFontSize);
  88.   tImageCSS.SetReplace("${NAVDIVOFF}", iNavDivOff);
  89.  
  90.   SaveString(cDestPath + "image.css", tImageCSS.Replace(), 0);
  91.  
  92.   var tIndexPage= new CTemplate();
  93.   if (iFilesCount>0)
  94.     tIndexPage.Load(cSourcePath + "imgindex.htm", 0);
  95.   else
  96.     tIndexPage.Load(cSourcePath + "galindex.htm", 0);
  97.  
  98.  
  99.   var tFooter= new CTemplate();
  100.   tFooter.Load(cSourcePath + "footer.tpl", 0);
  101.   
  102.   // directories
  103.   if (iDirsCount > 0)
  104.   {
  105.     var tGalNav= new CTemplate();
  106.     if (iFilesCount>0)
  107.         tGalNav.Load(cSourcePath + "galnav.tpl", 0);
  108.     else
  109.         tGalNav.Load(cSourcePath + "galnav2.tpl", 0);
  110.     tGalNav.SetReplace("${GALLERIESHEADER}", cGalleriesHeader);
  111.  
  112.     var pDefFolderImage = new CImage();
  113.     pDefFolderImage.Load(cSourcePath + "folder.png", 0);
  114.      
  115.     var tIndexRow = new CTemplate();
  116.     if (iFilesCount>0)
  117.         tIndexRow.Load(cSourcePath + "galthm.tpl", 0);
  118.     else
  119.         tIndexRow.Load(cSourcePath + "galthm2.tpl", 0);
  120.             
  121.     var cIndexRows = "";
  122.     
  123.     var cDirs = "";
  124.      
  125.     for (var iDir = 1; iDir <= iDirsCount; iDir++)
  126.     {
  127.       SetProgress(iDir);
  128.     
  129.       cDirName = lSelectedDirs.GetAt(iDir-1);
  130.       
  131.       cRelDirName = StripFilePath(cDirName);
  132.       
  133.       CreateDir(cDestPath + cRelDirName);
  134.  
  135.       var pFolderImage = new CImage();
  136.       var bCustomFolderImage = pFolderImage.LoadDirPreview(cDirName, pDefFolderImage);
  137.       pFolderImage.Render(iBgColor);
  138.  
  139.       pFolderImage.Resize(iThnWidth, iThnHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  140.       
  141.       tIndexRow.SetReplace("${IMGWIDTH}",pFolderImage.GetWidth());
  142.       tIndexRow.SetReplace("${IMGHEIGHT}",pFolderImage.GetHeight());
  143.       pFolderImage.SaveAs(cDestPath + cRelDirName + "\\" + "folder.png", PNGformat, 0, 0);
  144.  
  145.       tIndexRow.SetReplace("${GALPATH}", cRelDirName + "/index.htm");
  146.       tIndexRow.SetReplace("${GALTHUMB}", cRelDirName + "/" + "folder.png");
  147.       tIndexRow.SetReplace("${GALTITLE}", ReplaceExifStrings("{T}", cDirName, cDirName));
  148.       tIndexRow.SetReplace("${GALDESC}", ReplaceExifStrings("{D}", cDirName, cDirName));
  149. //      tIndexRow.SetReplace("${INDEX_DESC}", ReplaceExifStrings("{D}", cDirName, cDirName));
  150.       
  151.       pFolderImage.Close();  
  152.       cIndexRows += tIndexRow.Replace();
  153.     }
  154.     
  155.     pDefFolderImage.Close();
  156.     tGalNav.SetReplace("${INDEXES}", cIndexRows);
  157.     tIndexPage.SetReplace("${GALLERIESNAVIGATION}", tGalNav.Replace());
  158.   }
  159.   else
  160.   {
  161.       tIndexPage.SetReplace("${GALLERIESNAVIGATION}", "");
  162.   }
  163.  
  164.   
  165.     // generaty gallery
  166.   
  167.   var tImgFooter= new CTemplate();
  168.   tImgFooter.Load(cSourcePath + "footer.tpl", 0);
  169.  
  170.   var tIndexRow = new CTemplate();
  171.   tIndexRow.Load(cSourcePath + "indexrow.tpl", 0);
  172.  
  173.   var tIndexEntry = new CTemplate();
  174.   tIndexEntry.Load(cSourcePath + "indexentry.tpl", 0);
  175.  
  176.   var tIndexEntryEmpty = new CTemplate();
  177.   tIndexEntryEmpty.Load(cSourcePath + "indexentryempty.tpl", 0);
  178.   
  179.   var tImgPage = new CTemplate();
  180.   tImgPage.Load(cSourcePath + "index.htm", 0);
  181.  
  182.   var tImgTpl = new CTemplate();
  183.   if(bImgUseOriginal)
  184.     tImgTpl.Load(cSourcePath + "imgorig.tpl", 0);
  185.   else
  186.     tImgTpl.Load(cSourcePath + "img.tpl", 0);
  187.  
  188.   var tIndexHeader = new CTemplate();
  189.   tIndexHeader.Load(cSourcePath + "header.tpl", 0);
  190.  
  191.   var tNavPrev = new CTemplate();
  192.   tNavPrev.Load(cSourcePath + "navprev.tpl", 0);
  193.   
  194.   var tNavNext = new CTemplate();
  195.   tNavNext.Load(cSourcePath + "navnext.tpl", 0);
  196.  
  197.   var tNavUp = new CTemplate();
  198.   tNavUp.Load(cSourcePath + "navup.tpl", 0);
  199.  
  200.   var tImgDesc = new CTemplate();
  201.   tImgDesc.Load(cSourcePath + "imgdesc.tpl", 0);
  202.  
  203.   gallerypath = pAlbum.cAlbumRootPath + pAlbum.cCurrentGalleryRelativePath;
  204.   var TitleText=ReplaceExifStrings(cPageTitle, gallerypath, gallerypath);
  205.   var DescriptionText=ReplaceExifStrings(cGalDescription, gallerypath, gallerypath);
  206.   if (TitleText=="")
  207.     TitleText=" ";
  208.  
  209.   var cCol=0; 
  210.   var cRow=0; 
  211.   
  212.   var RowText="";
  213.   var RowsText="";
  214.   
  215.   var iPos=0;
  216.   var cPage=1;
  217.   if (iFilesCount==0)
  218.   {
  219.     if (DescriptionText!="") 
  220.     {
  221.         var tDesc = new CTemplate();
  222.         tDesc.Load(cSourcePath + "gallerydesc.tpl", 0);
  223.         tDesc.SetReplace("${DESCRIPTIONHEADER}", iGalDescriptionHeader);
  224.         tDesc.SetReplace("${DESCRIPTIONTEXT}", DescriptionText);
  225.         tIndexPage.SetReplace("${GALLERYDESCRIPTION}",tDesc.Replace());
  226.     } 
  227.     else
  228.         tIndexPage.SetReplace("${GALLERYDESCRIPTION}","");
  229.     tIndexHeader.SetReplace("${PAGETITLE}", TitleText);
  230.     tIndexPage.SetReplace("${GALLERYTITLE}",TitleText);
  231.     tIndexPage.SetReplace("${HEADER}",tIndexHeader.Replace());
  232.     tFooter.SetReplace("${FOOTER_TEXT}", ReplaceExifStrings(txtFooter, "", ""));
  233.     tIndexPage.SetReplace("${FOOTER}",tFooter.Replace());
  234.  
  235.     var cNavigationText="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  236.     if (pAlbum.bIsCurrentGalleryRootGallery)
  237.     {
  238.         if (iBackRef==2)
  239.         {
  240.             cNavigationText="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  241.         }
  242.         else
  243.             if (iBackRef==3)
  244.             {
  245.                 cNavigationText="<a href=\""+cBackRefURL+"\">"+tNavUp.Replace()+"</a>";
  246.             }
  247.             else
  248.             {
  249.                 cNavigationText=" ";
  250.             }
  251.     }
  252.  
  253.     tIndexPage.SetReplace("${NAVIGATION}",cNavigationText);
  254.     SaveString(cDestPath + GetPageFN(1), tIndexPage.Replace(), 0);
  255.     iPos=iPerPage;
  256.   }
  257.   for (var iFile = 1; iFile <= iFilesCount || iPos<iPerPage; iFile++) {
  258.   
  259.           if (iFile<=iFilesCount)
  260.         {
  261.          SetProgress(iDirsCount + iFile);
  262.           cFileName = lSelectedFiles.GetAt(iFile-1);
  263.  
  264.          cNumFileName = IntToStr(iFile, 5);
  265.          cThnFileName = "thn" + cNumFileName + ".jpg";
  266.          cImgFileName = "img" + cNumFileName + ".jpg";
  267.          cOrgFileName = "org" + cNumFileName + "." + GetFileExt(cFileName).toLowerCase();
  268.  
  269.         // LOAD FILE
  270.           var pImg = new CImage();
  271.           pImg.Load(cFileName, 0);
  272.         // MAKE IMAGE
  273.           tImgTpl.SetReplace("${IMGWIDTH}",0);
  274.           tImgTpl.SetReplace("${IMGHEIGHT}",0);    
  275.             if (bImgUseOriginal)
  276.             {
  277.                 CopyFile(cFileName, cDestPath + cImgFileName, FIL_OM_OVERWRITE);
  278.             }
  279.             else
  280.             {
  281.                 pImg.Resize(iImgWidth, iImgHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  282.               tImgTpl.SetReplace("${IMGWIDTH}",pImg.GetWidth());
  283.               tImgTpl.SetReplace("${IMGHEIGHT}",pImg.GetHeight());
  284.                 pImg.SaveAs(cDestPath + cImgFileName, JPGformat, iImgJPEG, 0);
  285.             }
  286.             var imgpos=Math.floor((iImgHeight-pImg.GetHeight())/2);
  287.         // MAKE THUMB
  288.           pImg.Resize(iThnWidth, iThnHeight, GFX_KEEP_ASPECT | GFX_INTERPOLATE);
  289.           
  290.           iCurThmWidth=pImg.GetWidth();
  291.           iCurThmHeight=pImg.GetHeight();
  292.             pImg.SaveAs(cDestPath + cThnFileName, JPGformat, iTNJPEG, 0);
  293.         // CLOSE
  294.             pImg.Close(); 
  295.             
  296.         // GENERATE IMAGE PAGE
  297.               tImgFooter.SetReplace("${FOOTER_TEXT}",ReplaceExifStrings(txtImgFooter, cFileName, cDestPath + cImgFileName));
  298.             tImgPage.SetReplace("${IMAGEHEADERTEXT}",ReplaceExifStrings(cImgHeaderText, cFileName, cDestPath + cImgFileName));        
  299.             tImgPage.SetReplace("${FOOTER}",tImgFooter.Replace());
  300.             tImgPage.SetReplace("${IMAGEFILENAME}",cImgFileName);
  301.             tImgPage.SetReplace("${GALLERYTITLE}",TitleText);
  302.             tImgPage.SetReplace("${INDEXPAGENAME}",GetPageFN(cPage));
  303.             tImgTpl.SetReplace("${IMAGEFILENAME}",cImgFileName);
  304.             tImgPage.SetReplace("${IMGTPL}",tImgTpl.Replace());
  305.             if (cImgDescText!="") {
  306.               tImgDesc.SetReplace("${IMAGEDESCTEXT}",ReplaceExifStrings(cImgDescText, cFileName, cDestPath + cImgFileName));
  307.               tImgPage.SetReplace("${IMAGEDESCTEXT}",tImgDesc.Replace());
  308.             }
  309.             else
  310.             {
  311.                 tImgPage.SetReplace("${IMAGEDESCTEXT}","");
  312.             }
  313.  
  314.             if (imgpos<0) imgpos=0;
  315.             tImgPage.SetReplace("${IMAGETOP}",imgpos);
  316.             
  317.             // prev - next navigation
  318.             {
  319.                   var cNavigationText="";
  320.                   if (iFile>1)
  321.                     cNavigationText+="<a href=\""+GetImgPageFN(iFile-1)+"\">"+tNavPrev.Replace()+"</a>";
  322.                 else
  323.                     cNavigationText+=tNavPrev.Replace();
  324.                 //cNavigationText+="   ";
  325.                 cNavigationText+=" "+iFile+"/"+iFilesCount+" ";
  326.                 if (iFile<iFilesCount)
  327.                     cNavigationText+="<a href=\""+GetImgPageFN(iFile+1)+"\">"+tNavNext.Replace()+"</a>";
  328.                 else
  329.                     cNavigationText+=tNavNext.Replace();
  330.                 cNavigationText+="   ";
  331.                 cNavigationText+="<a href=\""+GetPageFN(cPage)+"\">"+tNavUp.Replace()+"</a>";
  332.                 tImgPage.SetReplace("${NAVIGATION}",cNavigationText);    
  333.             }
  334.             
  335.             // navigation with thumbnails
  336.             {
  337.                 var cNavigationText="";
  338.                 var iMin=iFile-2;
  339.                 if (iMin<1)
  340.                     iMin=1;
  341.                 var iMax=iFile+2;
  342.                 if (iMax>iFilesCount)
  343.                    iMax=iFilesCount;
  344.                     
  345.                 if (iMin==1 && iFilesCount>3)
  346.                 {
  347.                     iMax=5;
  348.                     if (iMax>iFilesCount) iMax=iFilesCount;
  349.                 }
  350.                 if (iMax==iFilesCount && iFilesCount>3)
  351.                 {
  352.                     iMin=iFilesCount-4;
  353.                     if (iMin<1) iMin=1;
  354.                 }                
  355.                 
  356.                 var tThmNavEntry = new CTemplate();
  357.                 tThmNavEntry.Load(cSourcePath + "thmnaventry.tpl", 0);
  358.                 var tThmNavEntryA = new CTemplate();
  359.                 tThmNavEntryA.Load(cSourcePath + "thmnaventrya.tpl", 0);
  360.                 for(var i=iMin;i<=iMax;i++)
  361.                 {
  362.                     var cThmNumFileName = IntToStr(i, 5);
  363.                          var cThmThnFileName = "thn" + cThmNumFileName + ".jpg";                
  364.                     if (i==iFile)
  365.                     {
  366.                         tThmNavEntryA.SetReplace("${IMGPAGEPATH}",GetImgPageFN(i));
  367.                         tThmNavEntryA.SetReplace("${THMNAME}",cThmThnFileName);
  368.                         cNavigationText+=tThmNavEntryA.Replace();                    
  369.                     }
  370.                     else
  371.                     { 
  372.                         tThmNavEntry.SetReplace("${IMGPAGEPATH}",GetImgPageFN(i));
  373.                         tThmNavEntry.SetReplace("${THMNAME}",cThmThnFileName);
  374.                         cNavigationText+=tThmNavEntry.Replace();
  375.                     }
  376.                 }
  377.                 tImgPage.SetReplace("${THMNAVIGATION}",cNavigationText);    
  378.             }
  379.             SaveString(cDestPath + GetImgPageFN(iFile), tImgPage.Replace(), 0);
  380.                     
  381.         // ADD TO INDEX
  382.             tIndexEntry.SetReplace("${IMAGEPAGEPATH}",GetImgPageFN(iFile));
  383.             tIndexEntry.SetReplace("${THUMBNAILPATH}",cThnFileName);
  384.             tIndexEntry.SetReplace("${INDEXENTRYTEXT}",ReplaceExifStrings(thnDescription, cFileName, cDestPath + cImgFileName));
  385.             tIndexEntry.SetReplace("${IMGWIDTH}",iCurThmWidth);
  386.             tIndexEntry.SetReplace("${IMGHEIGHT}",iCurThmHeight);
  387.             
  388.             RowText+=tIndexEntry.Replace();
  389.         }
  390.         else
  391.         {
  392.             RowText+=tIndexEntryEmpty.Replace();
  393.         }
  394.         
  395.         cCol++;         
  396.         if (cCol==iCols)
  397.         {
  398.             cCol=0;
  399.             cRow++;                    
  400.             tIndexRow.SetReplace("${INDEXENTRIES}",RowText);
  401.             RowText="";
  402.             if (iFile - iFilesCount >= iCols)
  403.             {
  404.                 // do nothing - empty row
  405.             }
  406.             else
  407.                 RowsText+=tIndexRow.Replace();    
  408.         }
  409.         if (cRow==iRows)
  410.         {
  411.             cCol=0;
  412.             cRow=0;
  413.             tIndexPage.SetReplace("${INDEXROWS}",RowsText);
  414.             RowsText="";
  415.             // page counter will be incremented in next "if" section
  416.         }        
  417.     
  418.           iPos++;
  419.         if (iPos==iPerPage)
  420.         {
  421.             if (iFile <= iFilesCount)
  422.                 iPos=0;
  423.  
  424.             tIndexHeader.SetReplace("${PAGETITLE}", TitleText);
  425.             tIndexPage.SetReplace("${GALLERYTITLE}",TitleText);
  426.  
  427.  
  428.             if (DescriptionText=="") {
  429.                 tIndexPage.SetReplace("${GALLERYDESCRIPTION}","");
  430.             }
  431.             else
  432.             {
  433.                 var tDesc = new CTemplate();
  434.                 tDesc.Load(cSourcePath + "gallerydesc.tpl", 0);
  435.                 tDesc.SetReplace("${DESCRIPTIONHEADER}", iGalDescriptionHeader);
  436.                 tDesc.SetReplace("${DESCRIPTIONTEXT}", DescriptionText);
  437.                 tIndexPage.SetReplace("${GALLERYDESCRIPTION}",tDesc.Replace());
  438.             }                
  439.  
  440.             tIndexPage.SetReplace("${HEADER}",tIndexHeader.Replace());
  441.             var cNavigationText="";
  442.             if (cPage>1)
  443.                 cNavigationText+="<a href=\""+GetPageFN(cPage-1)+"\">"+tNavPrev.Replace()+"</a>";
  444.             else
  445.                 cNavigationText+=tNavPrev.Replace();
  446.             //cNavigationText+="   ";
  447.             cNavigationText+=" "+cPage+"/"+iPagesCount+" ";
  448.             if (cPage<iPagesCount)
  449.                 cNavigationText+="<a href=\""+GetPageFN(cPage+1)+"\">"+tNavNext.Replace()+"</a>";
  450.             else
  451.                 cNavigationText+=tNavNext.Replace();
  452.             cNavigationText+="   ";
  453.             if (pAlbum.bIsCurrentGalleryRootGallery)
  454.             {
  455.                 if (iBackRef==2)
  456.                 {
  457.                     cNavigationText+="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  458.                 }
  459.                 else
  460.                     if (iBackRef==3)
  461.                     {
  462.                         cNavigationText+="<a href=\""+cBackRefURL+"\">"+tNavUp.Replace()+"</a>";
  463.                     }
  464.                     else
  465.                     {
  466.                         cNavigationText+=" ";
  467.                     }
  468.             }
  469.             else
  470.                 cNavigationText+="<a href=\"../\">"+tNavUp.Replace()+"</a>";
  471.             tIndexPage.SetReplace("${NAVIGATION}",cNavigationText);
  472.  
  473.             tFooter.SetReplace("${FOOTER_TEXT}", ReplaceExifStrings(txtFooter, "", ""));
  474.             tIndexPage.SetReplace("${FOOTER}",tFooter.Replace());
  475.  
  476.             SaveString(cDestPath + GetPageFN(cPage), tIndexPage.Replace(), 0);
  477.             cPage++;
  478.         }
  479.   }
  480.  
  481.   return cDestPath + GetPageFN(1);
  482. }
  483.  
  484. INIT_OK;
  485.  
  486.